home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / vmi_time.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.2 KB  |  99 lines

  1. /*
  2.  * VMI Time wrappers
  3.  *
  4.  * Copyright (C) 2006, VMware, Inc.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful, but
  12.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  14.  * NON INFRINGEMENT.  See the GNU General Public License for more
  15.  * details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  * Send feedback to dhecht@vmware.com
  22.  *
  23.  */
  24.  
  25. #ifndef _ASM_X86_VMI_TIME_H
  26. #define _ASM_X86_VMI_TIME_H
  27.  
  28. /*
  29.  * Raw VMI call indices for timer functions
  30.  */
  31. #define VMI_CALL_GetCycleFrequency    66
  32. #define VMI_CALL_GetCycleCounter    67
  33. #define VMI_CALL_SetAlarm        68
  34. #define VMI_CALL_CancelAlarm        69
  35. #define VMI_CALL_GetWallclockTime    70
  36. #define VMI_CALL_WallclockUpdated    71
  37.  
  38. /* Cached VMI timer operations */
  39. extern struct vmi_timer_ops {
  40.     u64 (*get_cycle_frequency)(void);
  41.     u64 (*get_cycle_counter)(int);
  42.     u64 (*get_wallclock)(void);
  43.     int (*wallclock_updated)(void);
  44.     void (*set_alarm)(u32 flags, u64 expiry, u64 period);
  45.     void (*cancel_alarm)(u32 flags);
  46. } vmi_timer_ops;
  47.  
  48. /* Prototypes */
  49. extern void __init vmi_time_init(void);
  50. extern unsigned long vmi_get_wallclock(void);
  51. extern int vmi_set_wallclock(unsigned long now);
  52. extern unsigned long long vmi_sched_clock(void);
  53. extern unsigned long vmi_tsc_khz(void);
  54.  
  55. #ifdef CONFIG_X86_LOCAL_APIC
  56. extern void __devinit vmi_time_bsp_init(void);
  57. extern void __devinit vmi_time_ap_init(void);
  58. #endif
  59.  
  60. /*
  61.  * When run under a hypervisor, a vcpu is always in one of three states:
  62.  * running, halted, or ready.  The vcpu is in the 'running' state if it
  63.  * is executing.  When the vcpu executes the halt interface, the vcpu
  64.  * enters the 'halted' state and remains halted until there is some work
  65.  * pending for the vcpu (e.g. an alarm expires, host I/O completes on
  66.  * behalf of virtual I/O).  At this point, the vcpu enters the 'ready'
  67.  * state (waiting for the hypervisor to reschedule it).  Finally, at any
  68.  * time when the vcpu is not in the 'running' state nor the 'halted'
  69.  * state, it is in the 'ready' state.
  70.  *
  71.  * Real time is advances while the vcpu is 'running', 'ready', or
  72.  * 'halted'.  Stolen time is the time in which the vcpu is in the
  73.  * 'ready' state.  Available time is the remaining time -- the vcpu is
  74.  * either 'running' or 'halted'.
  75.  *
  76.  * All three views of time are accessible through the VMI cycle
  77.  * counters.
  78.  */
  79.  
  80. /* The cycle counters. */
  81. #define VMI_CYCLES_REAL         0
  82. #define VMI_CYCLES_AVAILABLE    1
  83. #define VMI_CYCLES_STOLEN       2
  84.  
  85. /* The alarm interface 'flags' bits */
  86. #define VMI_ALARM_COUNTERS      2
  87.  
  88. #define VMI_ALARM_COUNTER_MASK  0x000000ff
  89.  
  90. #define VMI_ALARM_WIRED_IRQ0    0x00000000
  91. #define VMI_ALARM_WIRED_LVTT    0x00010000
  92.  
  93. #define VMI_ALARM_IS_ONESHOT    0x00000000
  94. #define VMI_ALARM_IS_PERIODIC   0x00000100
  95.  
  96. #define CONFIG_VMI_ALARM_HZ    100
  97.  
  98. #endif /* _ASM_X86_VMI_TIME_H */
  99.